//////////////////////////////////////////////////////////////////////////
// $Id: Scene.cpp,v 1.1 2009/04/03 12:46:11 sunjun Exp $
//////////////////////////////////////////////////////////////////////////

#include "Local.h"

//////////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN

//////////////////////////////////////////////////////////////////////////	

	Scene::Scene( U32 type )
	{
		mType = type;
	}

	Scene::~Scene() 
	{
		
	}

	//////////////////////////////////////////////////////////////////////////

	/*
	====================
	operator
	====================
	*/
	INLINE VOID Scene::operator() (Context*rc)
	{
		GUARD(Scene::operator());

		CHECK(rc);

		if( mType == ST_BEGIN )
		{
			HRESULT hr = ((IDirect3DDevice9*)rc->handle())->BeginScene();
			if(FAILED(hr)) MAssert(VA("Scene::operator() : fail to begin the scene(%s)!", DXGetErrorDescription(hr)));
		}
		else if( mType == ST_END )
		{
			HRESULT hr = ((IDirect3DDevice9*)rc->handle())->EndScene();
			if(FAILED(hr)) MAssert(VA("Scene::operator() : fail to end the scene(%s)!", DXGetErrorDescription(hr)));

			hr = ((IDirect3DDevice9*)rc->handle())->Present(NULL, NULL, NULL, NULL);
			if(FAILED(hr)) MAssert(VA("Scene::operator() : fail to present(%s)!", DXGetErrorDescription(hr)));
		}
		else
		{
			MAssert(VA("Scene::operator() : the Scene type is error(%d)!", mType));
		}	

		UNGUARD;
	}
	

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////
